//Object.defineProperty 用来给对象定义新的属性或者修改现在的属性，并返回该对象

let obj = {};
let value =10;
Object.defineProperty(obj,'key1',{
    //value:'value1',//指定值
    //writable:true,//是否可以修改它的值，如果为true,就是可以修改，如果为false,不能修改,就是只读的
    enumerable:true,//是否可枚举,如果为true,就可以for in keys values entries里面出现
    configurable:false,//是否可以配置或者说删除，
    get(){
        return value;
    },
    set(newValue){
        value=newValue;
    }
});
obj.xx = 2;
/*console.log(obj.key1)
console.log(Object.keys(obj));
obj.key1 = 'value2';
console.log(obj.key1)
delete obj.key1;
console.log(obj)
TypeError: Invalid property descriptor. 
Cannot both specify accessors and a value or writable attribute, #<Object>
 */
console.log(obj.key1)
obj.key1=20;
console.log(value)


let obj3 = {}
obj3.k = 1;
console.log(Object.getOwnPropertyDescriptor(obj3,'k'));
